package com.tuozixuan.demo;

import reactor.core.publisher.Mono;

import java.time.Duration;
import java.util.Optional;

public class MonoDemo {

    public static void main(String[] args) throws InterruptedException {

        // just: 创建包含一个元素的Mono对象（参数不能为null）
        Mono.just("java");

        // empty: 创建一个空的Mono对象，不会发生任何元素
        Mono.empty();

        // 创建一个不包含任何消息通知的序列（不会发出任何数据、错误或完成信号）
        Mono.never();

        // 创建一个Mono序列，在指定的延迟时间之后，产生数字0作为唯一值
        Mono.delay(Duration.ofMillis(500)).subscribe(System.out::println);

        // 创建一个Mono序列，忽略作为源的Publisher中的所有元素，只产生消息
        Mono.ignoreElements(Mono.just("java")).subscribe(System.out::println);

        // 从一个Optional对象或可能为null的对象中创建Mono。只有Optional对象中包含之或对象不为null时，Mono序列才产生对应的元素
        String str = null;
        Mono.justOrEmpty(Optional.ofNullable(str));
        Mono.justOrEmpty(str);

        Thread.sleep(2000);
    }

}
